A process may be broadly defined as a set of operations performed on some input to provide a desired result. Examples of such would be a spreadsheet, a database management system, a financial prediction program, a communications network control system, or a design simulation, which operates on data representing financial information, communications requirements or information describing a system or device being simulated. Other examples include a process controlling an industrial or chemical process which accepts data representing operation of the industrial or chemical process to provide outputs controlling the process. The present most common implementation of such a process is as a program executed by a processing unit such as a central processing unit or a microprocessor, wherein program defines and controls the set of operations comprising the process.
Such program implemented processes accept input data in the form of input variables, also referred to as parameters, and perform a set of operations with the input parameters and variables generated internally to the process to determine the value of other variables which represent quantities of interest to a user of the process. It is often useful in such processes to be able to determine the rate and direction of change, or gradient, of variables of interest to the user of the process with respect to selected other variables of the process, such as input parameters which are controllable by the user. The information regarding the gradients of the variables of interest may then be used to vary the input parameters in a manner to drive the results generated by the process to a value or values selected as optimum.
The prior art has evolved a number of ways in which to control processes by controlling the input parameters to the process. One approach was "trial and error" wherein the user conducted a number of runs of the process with different values of input parameter to approximate the rate of change of the outputs with respect to the inputs. This approach is very time consuming and provides only approximations to the actual rate of change of outputs with respect to inputs, not an exact value. In addition, this approach is seldom applicable to control processes which operate in "real time", such as processes used to control industrial or chemical processes or, for example, the flight of an aircraft, as it is generally impossible to re-run the process under the same conditions and with the same input parameters.
Another approach is commonly referred to as "perturbation analysis" and generally requires the creation of a mathematical model of a gradient determination process and the running of a simulation of the mathematical model on a computer system to approximate the process. This approach is acknowledged as useful only in a very limited range of processes, such as simple processes simulating simple systems or devices, as the mathematical models quite rapidly become very complex as the complexity of the process increases. This approach requires the creation of a different mathematical model for each type of process to be simulated, and usually for each individual process to be simulated. In addition, this approach involves at least tow levels of abstraction from the actual process, the first in creating a mathematical model of the process, and a second in analyzing the mathematical model of the process to determine a mathematical model of the gradient determination process. The gradient determination process must then be implemented as a computer program. As a result, it is difficult to ensure that the results of the gradient determination process accurately or adequately represent the gradients of the actual process.
"Likelihood ratios" is yet another approach and is similar in most respects to perturbation analysis but applies to a different class of problems and uses sequences of uniform random numbers to drive the simulation.
Yet another approach is referred to as response surface methodology and is essentially a mathematically modelled version of the earlier "trial and error" approach. In response surface methodology the processes is executed a number of times with different input parameters, a greatly simplified mathematical model or expression is created to define a "surface" on which the results lie for each execution of the process, the extreme points on the surface are determined from the mathematical model of the surface. In addition to all of the disadvantages of the "trial and error" method, this approach has the disadvantages that it again does not reflect the operation of the process for all possible input parameters, so that there is substantial uncertainty as to whether the model derived actually represents the actual process, as well as further uncertainties arising from assumptions about the smoothness, or granularity of the surface, which is function of both the model and the number of reiterations of the process. Also, it is very difficult in this approach, as in all of the mathematical modelling approaches, to determine the amount and direction in which to vary the input parameters for successive reiterations of the process modelling when there are a large number of parameters.
Finally, there are at present certain applications programs, such as spreadsheets, which provide a facility for approximating the rate of change of a variable of interest with respect to an input parameter by using a very simplified algebraic model of the spreadsheet processes defined by the user to provide an "educated guess" version of the old "trial and error" method.
The present invention provides a solution to these and other problems of the prior art.